﻿using 示例中体现的ModelBus核心思想.Models.Data;
using 示例中体现的ModelBus核心思想.Models.Domain;

namespace 示例中体现的ModelBus核心思想.ModelBus.Converters
{
    /// <summary>
    /// 领域模型 → 数据模型 转换器
    /// 负责将业务模型转换为适合存储的格式
    /// </summary>
    public class DomainToDataConverter : IModelConverter<Product, ProductData>
    {
        public ProductData Convert(Product source)
        {
            if (source == null) return null;

            return new ProductData
            {
                Id = source.Id,
                Name = source.Name,
                Price = source.Price,
                // 领域枚举转换为存储用的整数
                StatusCode = (int)source.Status,
                // 生成存储层需要的SKU（领域模型不关心）
                Sku = $"SKU_{source.Id.ToString().Substring(0, 8).ToUpper()}",
                CreatedAt = DateTime.UtcNow
            };
        }

        public IEnumerable<ProductData> Convert(IEnumerable<Product> sources)
        {
            return sources?.Select(Convert) ?? Enumerable.Empty<ProductData>();
        }
    }
}
